Skip to main content
Glama
Southclaws

Storyden

by Southclaws
page.tsx1.8 kB
import { source } from "@/lib/source"; import { DocsPage, DocsBody, DocsDescription, DocsTitle, } from "fumadocs-ui/page"; import { notFound } from "next/navigation"; import { createRelativeLink } from "fumadocs-ui/mdx"; import { getMDXComponents } from "@/mdx-components"; import { Metadata } from "next"; export default async function Page(props: { params: Promise<{ slug?: string[] }>; }) { const params = await props.params; const page = source.getPage(params.slug); if (!page) notFound(); const MDXContent = page.data.body; return ( <DocsPage toc={page.data.toc} full={page.data.full} editOnGithub={{ owner: "Southclaws", repo: "storyden", sha: "main", path: `home/content/docs/${page.path}`, }} > <DocsTitle>{page.data.title}</DocsTitle> <DocsDescription>{page.data.description}</DocsDescription> <DocsBody> <MDXContent components={{ // this allows you to link to other pages with relative file paths a: createRelativeLink(source, page), ...getMDXComponents(), }} /> </DocsBody> </DocsPage> ); } export async function generateStaticParams() { return source.generateParams(); } export async function generateMetadata(props: { params: Promise<{ slug?: string[] }>; }) { const params = await props.params; const { slug = [] } = params; const page = source.getPage(params.slug); if (!page) notFound(); const image = ["/docs-og", ...slug, "image.png"].join("/"); return { title: page.data.title, description: page.data.description, openGraph: { images: image, }, twitter: { card: "summary_large_image", images: image, }, } satisfies Metadata; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Southclaws/storyden'

If you have feedback or need assistance with the MCP directory API, please join our Discord server